/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package BackEnd;


import java.util.Date;

import Dao.*;
import java.sql.Time;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 *
 * @author emmanuel
 */
public class ComentarioPost {
    private long id;
    private Date fechaCreacion;
    private Time hora;
    private String titulo;
    private String contenido;
    private Usuario usuario;
    private Usuario moderador;
    private String motivoModeracion;
    private Date fechaModeracion;
    private long idPost;
    

    public ComentarioPost(String t,String c,Usuario u)
    {
        fechaCreacion = new Date();
        titulo = t;
        contenido = c;
        usuario = u;
        moderador = null;
        motivoModeracion = "";
        fechaModeracion = null;
    }

    ComentarioPost() {
    }


    /**
     * @return the fechaCreacion
     */
    public Date getFechaCreacion() {
        return fechaCreacion;
    }

    /**
     * @param fechaCreacion the fechaCreacion to set
     */
    public void setFechaCreacion(Date fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }

    /**
     * @return the titulo
     */
    public String getTitulo() {
        return titulo;
    }

    /**
     * @param titulo the titulo to set
     */
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    /**
     * @return the contenido
     */
    public String getContenido() {
        return contenido;
    }

    /**
     * @param contenido the contenido to set
     */
    public void setContenido(String contenido) {
        this.contenido = contenido;
    }

    

    /**
     * @return the motivoModeracion
     */
    public String getMotivoModeracion() {
        return motivoModeracion;
    }

    /**
     * @param motivoModeracion the motivoModeracion to set
     */
    public void setMotivoModeracion(String motivoModeracion) {
        this.motivoModeracion = motivoModeracion;
    }

    /**
     * @return the fechaModeracion
     */
    public Date getFechaModeracion() {
        return fechaModeracion;
    }

    /**
     * @param fechaModeracion the fechaModeracion to set
     */
    public void setFechaModeracion(Date fechaModeracion) {
        this.fechaModeracion = fechaModeracion;
    }

    /**
     * @return the usuario
     */
    public Usuario getUsuario() {
        return usuario;
    }

    /**
     * @param usuario the usuario to set
     */
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    /**
     * @return the moderador
     */
    public Usuario getModerador() {
        return moderador;
    }

    /**
     * @param moderador the moderador to set
     */
    public void setModerador(Usuario moderador) {
        this.moderador = moderador;
    }

    public boolean abrir(long idCom) {
        try{
            ComentariopostValueObject cpvo = (ComentariopostValueObject) new ComentariopostDao().traer(new PkId((int)idCom ));
        
            this.setContenido(cpvo.getContenido());
            this.setHora(cpvo.getHora());
            this.setFechaCreacion(cpvo.getFecha());
            this.setFechaModeracion(cpvo.getFechaModeracion());
            this.setId(cpvo.getId());
            this.setIdPost(cpvo.getIdPost());

            Usuario mod=new Usuario();
            mod.abrir(cpvo.getIdModerador());
            this.setModerador(mod);

            this.setMotivoModeracion(cpvo.getMotivoModeracio());
            this.setTitulo(cpvo.getTitulo());

            Usuario usua=new Usuario();
            usua.abrir(cpvo.getIdUsuario());        
            this.setUsuario(usua);
            
        }catch(Exception ex){
            Logger.getLogger(Post.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }

        return true;

    }

    public void grabar() {
        ComentariopostValueObject cpvo=new ComentariopostValueObject();
        cpvo.setContenido(contenido);
        cpvo.setFecha(fechaCreacion);
        cpvo.setHora(hora);
        cpvo.setIdPost((int)idPost);
        cpvo.setFechaModeracion(fechaModeracion);
        cpvo.setId((int)id);
        cpvo.setIdModerador((int)moderador.getId());
        cpvo.setIdUsuario((int)usuario.getId());
        cpvo.setMotivoModeracio(motivoModeracion);
        cpvo.setTitulo(titulo);

        try {
            try {
                new ComentariopostDao().traer(new PkId((int)id));
                } catch (Exception ex){
                    new ComentariopostDao().create(cpvo);
                }

             new ComentariopostDao().update(cpvo);
            } catch (Exception ex1) {Logger.getLogger(Post.class.getName()).log(Level.SEVERE, null, ex1);}      
    }

    /**
     * @return the id
     */
    public long getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(long id) {
        this.id = id;
    }

    /**
     * @return the hora
     */
    public Time getHora() {
        return hora;
    }

    /**
     * @param hora the hora to set
     */
    public void setHora(Time hora) {
        this.hora = hora;
    }

    /**
     * @return the idPost
     */
    public long getIdPost() {
        return idPost;
    }

    /**
     * @param idPost the idPost to set
     */
    public void setIdPost(long idPost) {
        this.idPost = idPost;
    }

}
